import { type SearchParams } from "@/types/table" import { getValidFilters } from "@/lib/data-table" import { getAllTBE } from "@/lib/rfqs/service" import { searchParamsTBECache } from "@/lib/rfqs/validations" import { AllTbeTable } from "@/lib/tbe/table/tbe-table" import { RfqType } from "@/lib/rfqs/validations" import * as React from "react" import { Shell } from "@/components/shell" import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton" import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" interface IndexPageProps { params: { lng: string } searchParams: Promise } // 타입별 페이지 설명 구성 (Budgetary 제외) const typeConfig: Record = { "purchase": { title: "Purchase RFQ Technical Bid Evaluation", description: "실제 구매 발주 전 가격 요청을 위한 TBE입니다.", rfqType: RfqType.PURCHASE }, "purchase-budgetary": { title: "Purchase Budgetary RFQ Technical Bid Evaluation", description: "프로젝트 수주 후, 공식 입찰 전 예산 책정을 위한 TBE입니다.", rfqType: RfqType.PURCHASE_BUDGETARY } } export default async function RfqTBEPage(props: IndexPageProps) { const resolvedParams = await props.params const lng = resolvedParams.lng // URL 쿼리 파라미터에서 타입 추출 const searchParams = await props.searchParams // 기본값으로 'purchase' 사용 const typeParam = searchParams?.type as string || 'purchase' // 유효한 타입인지 확인하고 기본값 설정 const validType = Object.keys(typeConfig).includes(typeParam) ? typeParam : 'purchase' const rfqType = typeConfig[validType].rfqType // SearchParams 파싱 (Zod) const search = searchParamsTBECache.parse(searchParams) const validFilters = getValidFilters(search.filters) // 현재 선택된 타입의 데이터 로드 const promises = Promise.all([ getAllTBE({ ...search, filters: validFilters, rfqType }) ]) // 페이지 경로 생성 함수 - 단순화 const getTabUrl = (type: string) => { return `/${lng}/evcp/tbe?type=${type}`; } return (

TBE 관리

{/*

초대된 협력업체에게 TBE를 보낼 수 있습니다.
체크박스 선택을 하면 초대 버튼이 활성화됩니다. 버튼 클릭 후 첨부파일을 함께 전송하면 TBE 내용이 메일로 전달되고 eVCP에도 협력업체가 입력할 수 있게 자동 생성됩니다.

*/}
{/* 타입 선택 탭 (Budgetary 제외) */} Purchase Purchase Budgetary

{typeConfig[validType].description}

} >
) }